Packet-based communication networks (such as the Internet) transfer information between computers and other equipment using a data transmission format known as packetized data. The stream of data from a data source (e.g., a host computer) is divided into variable or fixed length "chunks" of data (i.e., packets). Switches (e.g. routers) in the network route the packets from the data source to the appropriate data destination. In many cases, the packets may be relayed through several routers before they reach their destination. Once the packets reach their destination, they are reassembled to regenerate the stream of data.
Conventional packet-based networks use a variety of protocols to control data transfer throughout a network. For example, the Internet Protocol ("IP") defines procedures for routing data through a network. To this end, IP specifies that the data is organized into frames, each of which includes an IP header and associated data. The routers in the network use the information in the IP header to forward the packet through the network. In the IP vernacular, each router-to-router link is referred to as a hop.
The Transmission Control Protocol ("TCP") defines additional functions such as data flow control and reliable data transfer. TCP specifies that the data is organized into segments, each of which includes a TCP header and associated data. TCP specifies that a destination must acknowledge segments that it successfully receives. Thus, after the destination receives a segments that has not been corrupted in transit and all previous packets were received, the destination sends an acknowledgment message to the source. In simplified terms, if the source does not receive an acknowledgment within a predefined period of time, the source retransmits the segment. (There are additional situations in which TCP will initiate a retransmission. Inasmuch as these situation are well known in the art, they will not be discussed in detail here.)
Retransmission schemes used by protocols such as TCP, while generally effective, reduce the usable bandwidth of the network. That is, the resources of the network are essentially wasted when they are used to transmit data that has previously been transmitted. Due to ever increasing demand for network bandwidth and the relatively high cost of providing additional bandwidth in conventional data networks, a need exists for a method of compensating for losses in the effective bandwidth of data networks.